const comUtil = require('./common')

/*
  格式化数字
  val: Number | String 格式化字符
  config: Object->{ 格式化配置
    length: Number 数字格式化长度
    fill: String 数字格式化填充字符
  }
  return String
  demo:
    const val = 1
    const formatVal = formatNumberOfCode(val) // output: "01"
*/
function formatNumberOfCode(val, config) {
  config = Object.assign({
    // 长度
    length: 2,
    // 填充字符
    fill: '0'
  }, config)

  if (val) {
    const valStr = val.toString()
    if (val.length >= config.length) {
      return valStr.slice(-1)
    } else {
      return Array.from({ length: config.length - valStr.length }).map(_ => config.fill).join('') + valStr
    }
  }
}
/*
  格式化对象写入路径
  modelPath: String  对象写入路径字符
  return String 格式化后对象写入字符路径
  示例
    const modelPath = "name[0].test"
    const formatModelPath = formatModelPath(modelPath) // output: "name.0.test"
*/
function formatModelPath(modelPath) {
  if (typeof modelPath === 'string' && modelPath) {
    return comUtil.trimAll(modelPath).replace(/(\[)|(\])/gm, (match, p1, p2) => {
      if (p1) {
        return '.'
      } else if (p2) {
        return ''
      } else {
        return match
      }
    })
  } else {
    return modelPath
  }
}

module.exports = {
  formatNumberOfCode,
  formatModelPath
}
